#include <gtk/gtk.h>
#include <cairo.h>

#define HAS_ITEM_ENGINE

typedef struct _DockItem {
  gchar* name;
  gchar* icon_filename;
  gchar* description;
  GHashTable* options;
} DockItem;

typedef struct _DockItemEngine {
  gchar* name;
  gchar* description;
  gchar* author;
  gchar* version;
  GHashTable* options;
  cairo_surface_t* (*render)(DockItem*,cairo_t*);
} DockItemEngine;

typedef struct _DockInterface {
  gboolean alpha;
  void (*dock_item_register_callback)(DockItem*,DockItemEngine*);
  void (*dock_item_request_redraw_callback)(DockItem*);
  gchar* (*dock_keyfile_get_string)(gchar*,gchar*);
  guint (*dock_keyfile_get_int)(gchar*,gchar*);
  gboolean (*dock_keyfile_get_boolean)(gchar*,gchar*);
  gchar** (*dock_keyfile_get_string_list)(gchar*,gchar*,guint*);
  gint* (*dock_keyfile_get_int_list)(gchar*,gchar*,guint*);
  guint default_item_width;
  guint default_item_height;
} DockInterface;
